/**
 * ===================================
 * Phaser3 游戏主入口文件 (main.js)
 * ===================================
 * 
 * 功能说明：
 * - 配置游戏的基本参数（分辨率、渲染器、物理引擎等）
 * - 导入并注册所有游戏场景
 * - 启动Phaser3游戏实例
 * 
 * 作者：游戏开发团队
 * 创建时间：2024年
 * 最后修改：2024年
 */

// ===== 导入Phaser3核心模块 =====
import { Game } from "phaser";

// ===== 导入资源预加载场景 =====
import { Preloader } from "./preloader";

// ===== 导入所有游戏场景 =====
import { GameOverScene } from "./scenes/GameOverScene";  // 游戏结束场景
import { HudScene } from "./scenes/HudScene";            // HUD界面场景（分数、时间显示）
import { MainScene } from "./scenes/MainScene";          // 主游戏场景（核心游戏逻辑）
import { MenuScene } from "./scenes/MenuScene";          // 主菜单场景
import { SplashScene } from "./scenes/SplashScene";      // 启动画面场景

/**
 * ===== Phaser3 游戏配置对象 =====
 * 
 * 详细配置说明：
 * - 渲染器设置：自动选择最佳渲染器（WebGL优先，Canvas备用）
 * - 画布尺寸：960x540像素的游戏区域
 * - 缩放策略：自适应缩放，保持宽高比
 * - 物理引擎：Arcade物理引擎，适合2D游戏
 * - 场景管理：按启动顺序注册所有场景
 * 
 * 更多配置信息: https://newdocs.phaser.io/docs/3.70.0/Phaser.Types.Core.GameConfig
 */
const config = {
    // ===== 渲染器配置 =====
    type: Phaser.AUTO,                    // 自动选择渲染器（优先WebGL，不支持则使用Canvas）
    parent: "phaser-container",           // 游戏画布的父容器ID（需要在HTML中定义）
    
    // ===== 游戏画布尺寸 =====
    width: 960,                           // 游戏画布宽度（逻辑像素）
    height: 540,                          // 游戏画布高度（逻辑像素）
    backgroundColor: "#1c172e",           // 游戏背景色（深紫色）
    
    // ===== 像素艺术优化 =====
    pixelArt: true,                       // 启用像素艺术模式（关闭抗锯齿，保持像素清晰）
    roundPixel: false,                    // 禁用像素取整（避免像素艺术模糊）
    
    // ===== 最大尺寸限制 =====
    max: {
        width: 800,                       // 画布最大宽度限制
        height: 600,                      // 画布最大高度限制
    },
    
    // ===== 缩放配置 =====
    scale: {
        mode: Phaser.Scale.FIT,           // 缩放模式：保持宽高比，适应容器
        autoCenter: Phaser.Scale.CENTER_BOTH  // 自动居中：水平和垂直都居中
    },
    
    // ===== 物理引擎配置 =====
    physics: {
        default: "arcade",                // 使用Arcade物理引擎（轻量级，适合2D游戏）
        arcade: {
            gravity: { y: 0 }             // 重力设置：Y轴重力为0（太空射击游戏不需要重力）
        }
    },
    
    // ===== 场景注册列表 =====
    // 注意：场景按数组顺序启动，第一个场景会自动开始
    scene: [
        Preloader,                        // 1. 资源预加载场景（首先启动）
        SplashScene,                      // 2. 启动画面场景（显示Logo）
        MainScene,                        // 3. 主游戏场景（核心游戏逻辑）
        MenuScene,                        // 4. 主菜单场景（开始游戏按钮）
        HudScene,                         // 5. HUD界面场景（分数、时间显示）
        GameOverScene                     // 6. 游戏结束场景（显示最终分数）
    ]
};

/**
 * ===== 启动Phaser3游戏实例 =====
 * 
 * 创建游戏实例并开始运行：
 * 1. 使用上面定义的config配置
 * 2. 自动启动第一个场景（Preloader）
 * 3. 开始游戏主循环（update、render等）
 */
new Game(config);